import router from '@/router'
import store from '@/store'
import axios from 'axios'
import { Message } from 'element-ui'

// 创建axios实例,设置请求的基地址和超时时间
const request = axios.create({
  baseURL: 'http://interview-api-t.itheima.net/',
  timeout: 5000
})

// 设置请求拦截器
request.interceptors.request.use(config => {
  // 之后会给config携带上token
  const token = store.state.user.token
  config.headers.Authorization = `Bearer ${token}`

  return config
}, err => {
  return Promise.reject(err)
})

// 设置响应拦截器
request.interceptors.response.use(response => {
  // 对响应的数据进行剥离
  return response.data
},
err => {
  // 之后会在这里使用Element UI的Message组件提示错误信息
  if (err.response) {
    // console.log(err.response.status)
    // console.log(err.response.data.message)
    if (err.response.status === 401) {
      store.commit('user/logout')
      router.push('/login')
      Message.error('登录过期,请重新登录')
      return
    }

    Message.error(err.response.data.message)
    return Promise.reject(err)
  }
}
)

// 暴露出request方法
export default request
